package com.wgy.day37Stream流.Stream流式思想概述和使用比较;

import java.util.ArrayList;
import java.util.List;

/*使用Stream流对集合元素进行操作
Stream流:是一个来自数据源的元素队列,是一个集合元素的函数模型,它既不是集合也不是数据结构,其本身不存储任何元素(或其地址值)
    元素是特定类型的对象,形成一个队列
    数据源 流的来源.可以是集合,数组等

Stream流两个基础特征:
       1.Pipelining:中间操作都会返回流对象本身.这样多个操作可以串联成一个管道,如同流式风格
       2.内部迭代:以前对集合遍历都是通过Iterator或者增强for的方式,显示在集合外部进行迭代,这叫做外部迭代.
                Stream提供了内部迭代的方式,流可以直接调用遍历方法
*/

public class Demo01Stream {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("周芷若");
        list.add("张翠山");
        list.add("赵敏");
        list.add("张三丰");
        list.add("张千");

        //对集合元素进行过滤,只要张开头的元素,存储到一个新的集合中
        //对集合元素进行过滤,只要姓名长度为3的元素,存储到一个新的集合中
        //遍历最后的集合
        list.stream()
                .filter(name -> name.startsWith("张"))
                .filter(name -> name.length() == 3)
                .forEach(name -> System.out.println(name));


    }
}



